import java.util.ArrayList;
import java.util.List;

class Solution89 {
    public List<Integer> grayCode(int n) {
        List<Integer> list = new ArrayList<>() ;
        list.add(0) ; 
        while(n > 0){
           
            for(int i=list.size()-1 ; i >= 0 ; i --){
                 list.set(i , (list.get(i) << 1 ) ) ;
                 list.add(list.get(i) +1) ; 
            }
            n -- ; 
        }
        return list ;
    }
}